home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / 16BIT.SRC < prev    next >
Text File  |  2019-04-13  |  5KB  |  307 lines

  1. ;*      25AUG85 @ 6:42PM
  2. ;*      65XX 16 BIT MACROS            *
  3. ;**************************************
  4. ;*      COPR 1985 BY IRWIN R. SHAPIRO *
  5. ;*      PRESIDENT OF I.R.S. LABS      *
  6. ;**************************************
  7.         .OPT GEN
  8. ;**************************************
  9. R0 = $2
  10. R1 = R0+2
  11. R2 = R1+2
  12. R3 = R2+2
  13. R4 = R3+2
  14. R5 = R4+2
  15. R6 = R5+2
  16. R7 = R6+2
  17. R8 = R7+2
  18. R9 = R8+2
  19. RA = R9+2
  20. RB = RA+2
  21. RC = RB+2
  22. RD = RC+2
  23. RE = RD+2
  24. RF = RE+2
  25. ;**************************************
  26.      .MAC TR
  27. ;RX,RY ;RX <- RY  [16B]
  28.      PHA  ; WHO KNOWS WHATS IN IT
  29.      LDA  ?2  ; MOVE THE HI & LO BYTE
  30.      STA  ?1
  31.      LDA  ?2+1
  32.      STA  ?1+1
  33.      PLA
  34.      .MND
  35.      .MAC ST
  36. ;RX,MEM ;RX -> MEMORY [16B]
  37.      PHA
  38.      LDA ?1
  39.      STA ?2
  40.      LDA ?1+1
  41.      STA ?2+1
  42.      PLA
  43.      .MND
  44.      .MAC LD
  45. ;RX,MEM ;RX <- MEMORY [16B]
  46.      PHA
  47.      LDA ?2
  48.      STA ?1
  49.      LDA ?2+1
  50.      STA ?1+1
  51.      PLA
  52.      .MND
  53.      .MAC STAT
  54. ;RX,(RY) ;RX -> (RY)  [16B]
  55.      PHA
  56.      TYA
  57.      PHA
  58.      LDY #0
  59.      LDA ?1
  60.      STA ?2,Y
  61.      LDA ?1+1
  62.      INY
  63.      STA ?2,Y
  64.      PLA
  65.      TAY
  66.      PLA
  67.      .MND
  68.      .MAC LDAT
  69. ;RX,RY ;RX <- (RY)  [16B]
  70.      PHA
  71.      TYA
  72.      PHA
  73.      LDY #0
  74.      LDA ?2,Y
  75.      STA ?1
  76.      INY
  77.      LDA ?2,Y
  78.      STA ?1+1
  79.      PLA
  80.      TAY
  81.      PLA
  82.      .MND
  83.      .MAC LDIM
  84. ;RX,WORD ;RX <- IMM.WORD   [16B]
  85.      PHA
  86.      LDA ?3+1
  87.      STA ?1
  88.      LDA ?3+2
  89.      STA ?1+1
  90.      PHP
  91.      CLC
  92.      BCC ?4
  93. ?3   LDA ?2,Y  ; IT'S NEVER EXECUTED
  94. ?4   PLP       ; BUT IT'S AN EASY WAY
  95.      PLA       ; TO FAKE A WORD
  96.      .MND
  97.      .MAC LDLO
  98. ;RX,MEM ;RX <- MEMORY   [8B]
  99.      PHA
  100.      LDA ?2
  101.      STA ?1
  102.      PLA
  103.      .MND
  104.      .MAC STLO
  105. ;RX,MEM ;RX -> MEMORY  [8B]
  106.      PHA
  107.      LDA ?1
  108.      STA ?2
  109.      PLA
  110.      .MND
  111.      .MAC PUSH
  112. ;RX,RY ;RX -> STACK OF RY  [16B]
  113.      PHA
  114.      TYA
  115.      PHA
  116.      SEC
  117.      LDA ?2
  118.      SBC #$2
  119.      STA ?2
  120.      LDA ?2+1
  121.      SBC #0
  122.      STA ?2
  123.      LDA ?1+1
  124.      LDY #0
  125.      STA (?2),Y
  126.      DEY
  127.      LDA ?1
  128.      STA (?2),Y
  129.      PLA
  130.      TAY
  131.      PLA
  132.      .MND
  133.      .MAC PULL
  134. ;RX,RY ;RX <- STACK OF RY  [16B]
  135.      PHA
  136.      TYA
  137.      PHA
  138.      LDY #1
  139.      LDA (?2),Y
  140.      STA ?1
  141.      DEY
  142.      LDA (?2),Y
  143.      STA ?1+1
  144.      CLC
  145.      LDA ?2
  146.      ADC #2
  147.      STA ?2
  148.      LDA ?2+1
  149.      ADC #0
  150.      STA ?2
  151.      PLA
  152.      TAY
  153.      PLA
  154.      .MND
  155.      .MAC MUL
  156. ;RX,RY ;RX TIMES RY
  157. ; RY=LO WORD AND RY+1=HI WORD OF RESULT
  158. ;                    [16B IN & 32B OUT]
  159.      PHA
  160.      TXA
  161.      PHA
  162.      LDA #0
  163.      STA ?2+2  ; ZERO OUT HI-WORD
  164.      STA ?2+3
  165.      LDX #17   ; 16 BIT WORDS
  166.      CLC
  167. ?3   ROR ?2+3  ; SHIFT IT
  168.      ROR ?2+2
  169.      ROR ?2+1
  170.      ROR ?2
  171.      BCC ?4
  172.      CLC
  173.      LDA ?1    ; AND ADD IT
  174.      ADC ?2+2
  175.      STA ?2+2
  176.      LDA ?1+1
  177.      ADC ?2+3
  178.      STA ?2+3
  179. ?4   DEX
  180.      BNE ?3
  181.      PLA
  182.      TAX
  183.      PLA
  184.      .MND
  185.      .MAC DIV
  186. ;RX,RY ;RX / RY
  187. ; RESULT RX = QUOTIENT,RX+1=REMAINDER
  188.      PHA
  189.      TXA
  190.      PHA
  191.      TYA
  192.      PHA
  193.      LDA #0
  194.      STA ?1+2 ; ZERO HI BYTE OF DVEND
  195.      STA ?1+3
  196.      LDA ?2   ; CHECK FOR DIV BY ZERO
  197.      ORA ?2+1
  198.      BNE ?3   ; DO THE DIVISION
  199.      STA ?1+1 ; ZERO IT OUT AND EXIT
  200.      STA ?1
  201.      BEQ ?4
  202. ?3   LDX #16
  203. ?5   ROL ?1
  204.      ROL ?1+1
  205.      ROL ?1+2
  206.      ROL ?1+3
  207.      SEC
  208.      LDA ?1+2
  209.      SBC ?2
  210.      TAY
  211.      LDA ?1+3
  212.      SBC ?2+1
  213.      BCC ?6
  214.      STY ?1+2
  215.      STA ?1+3
  216. ?6   DEX
  217.      BNE ?5
  218.      ROL ?1
  219.      ROL ?1+1
  220. ?4   PLA
  221.      TAY
  222.      PLA
  223.      TAX
  224.      PLA
  225.      .MND
  226.      .MAC SUB
  227. ;RX,RY ;RY <- RX-RY
  228. ;                  [16B]
  229. ; WORKS SIGNED OR UNSIGNED
  230.      PHA
  231.      LDA ?1
  232.      SEC
  233.      SBC ?2
  234.      STA ?2
  235.      LDA ?1+1
  236.      SBC ?2+1
  237.      STA ?2+1
  238.      PLA
  239.      .MND
  240.      .MAC ADD
  241. ;RX,RY ;RY <- RX+RY
  242. ;                            [16B]
  243. ; WORKS SIGNED OR UNSIGNED
  244.      PHA
  245.      LDA ?1
  246.      CLC
  247.      ADC ?2
  248.      STA ?2
  249.      LDA ?1+1
  250.      ADC ?2+1
  251.      STA ?2+1
  252.      PLA
  253.      .MND
  254.      .MAC INC16
  255. ;RX ;RX <- RX+1
  256. ;                        [16B]
  257.      INC ?1
  258.      BNE ?2
  259.      INC ?1+1
  260. ?2   .MND
  261.      .MAC DEC16
  262. ;RX ;RX <- RX+1
  263. ;                        [16B]
  264.      INC ?1  ; IT'S A LITTLE WEIRD
  265.      DEC ?1  ; BUT IT WORK'S
  266.      BNE ?2
  267.      DEC ?1+1
  268. ?2   DEC ?1
  269.      .MND
  270.      .MAC PUSHUS
  271. ;RX ;PUSH RX ONTO RF STK
  272.      PUSH ?1,RF            ;[16B]
  273.      .MND
  274.      .MAC PUSHRS
  275. ; PUSH RX ONTO RE STK
  276.      PUSH ?1,RE            ;[16B]
  277.      .MND
  278.      .MAC PULLUS
  279. ;RX ;PULL RX FROM RF STK
  280.      PULL ?1,RF            ;[16B]
  281.      .MND
  282.      .MAC PULLRS
  283. ;RX ;PULL RX FROM RE STK
  284.      PULL ?1,RE            ;[16B]
  285.      .MND
  286. ;    *=2000
  287. ;   TR R1,R2
  288. ;   ST R1,$0600
  289. ;   LD R2,%10110111
  290. ;   STAT R5,(R9)
  291. ;   LDAT R6,(R2)
  292. ;   LDIM R4,$FF
  293. ;   LDLO R4,65535
  294. ;   STLO R7,$45
  295. ;   PUSH R3,R4
  296. ;   PULL R2,RE
  297. ;   MUL R4,R5
  298. ;   DIV R4,R5
  299. ;   SUB R4,R5
  300. ;   ADD R4,R5
  301. ;   INC16 R8
  302. ;   DEC16 RA
  303. ;   PUSHUS R0
  304. ;   PUSHRS R1
  305. ;   PULLUS R2
  306. ;   PULLRS R3
  307.     .END